package com.zoncont.web.controller.system;

import com.zoncont.common.core.controller.BaseController;
import com.zoncont.common.core.domain.AjaxResult;
import com.zoncont.common.formbean.LoginFormBean;
import com.zoncont.common.utils.ServletUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 登录验证
 *
 * @author zoncont.ahanu
 */
@Controller
@Api(description = "登录管理")
public class SysLoginController extends BaseController {

    @GetMapping("/login")
    public String login(HttpServletRequest request, HttpServletResponse response) {
        // 如果是Ajax请求，返回Json字符串。
        if (ServletUtils.isAjaxRequest(request)) {
            return ServletUtils.renderString(response, "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}");
        }
        return "login";
    }

    @PostMapping("/login")
    @ResponseBody
    @ApiOperation("登录")
    public AjaxResult ajaxLogin(LoginFormBean form) {
        UsernamePasswordToken token = new UsernamePasswordToken(form.getUsername(), form.getPassword(), form.getRememberMe());
        SecurityUtils.getSubject().login(token);
        return AjaxResult.success("",SecurityUtils.getSubject().getSession().getId().toString());
    }

    @GetMapping("/unauth")
    public String unauth() {
        return "/error/unauth";
    }
}
